#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

int main()
{
    pid_t id = fork();

    if(id<0)
    {
        perror("fork");
        exit(-1);
    }

    else if(id==0)
    {
        //子进程
        int cnt=5;
        while(1)
        {
            printf("我是子进程：cnt:%d  pid:%d  ppid:%d\n",cnt,getpid(),getppid());
            sleep(1);
            cnt--;
        }
        return 100;
    }

    else 
    {
        //父进程
        printf("我是父进程：pid:%d ,ppid:%d\n",getpid(),getppid());
        int status=0;
        pid_t ret=waitpid(id,&status,0);
        if(ret>0)
        {
            printf("等待子进程成功，ret:%d 子进程收到的信号编号：%d  子进程的退出码：%d\n",ret,status&0x7F,(status>>8)&0xff);
        }
        //sleep(7);
        //wait(NULL);
        //while(1)
        //{
        //    printf("我是父进程：pid:%d  ppid:%d  status:%d\n",getpid(),getppid(),status);
        //    sleep(1);
        //}
    }

    return 0;
}
